#include "SpaceEngine.hpp"

// If Ogre is loaded onto Windows, do this the Windows way.
#if OGRE_PLATFORM == PLATFORM_WIN32 || OGRE_PLATFORM == OGRE_PLATFORM_WIN32
#define WIN32_LEAN_AND_MEAN
#include "windows.h"

// Create the main function in some weird cryptic C++ way.
INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT)
#else
int main(int argc, char **argv)
#endif
{
	SpaceEngine engine;
	try
	{
		engine.startEngine();
	}
	catch(std::exception& e)
	{
		#if OGRE_PLATFORM == PLATFORM_WIN32 || OGRE_PLATFORM == OGRE_PLATFORM_WIN32
			MessageBoxA(NULL, e.what(), "An exception has occurred!", MB_OK | MB_ICONERROR | MB_TASKMODAL);
		#else
			fprintf(stderr, "An exception has occurred: %s\n", e.what());
		#endif
	}

	// Just like every other C++ main function.
	return 0;
}
